#ifndef PRODUCTBROWSEPANEL_H
#define PRODUCTBROWSEPANEL_H

#include <QWidget>
#include <QTableView>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QComboBox>
#include <QDoubleSpinBox>
#include <QCheckBox>
#include "productmodel.h" // 产品数据模型头文件


// 产品浏览面板类，负责产品数据的展示、搜索、筛选及相关操作
class ProductBrowsePanel : public QWidget
{
    Q_OBJECT

public:
    // 构造函数：接收产品数据模型，初始化面板
    explicit ProductBrowsePanel(ProductModel *model, QWidget *parent = nullptr);
    // 默认析构函数
    ~ProductBrowsePanel() = default;

    // 提供外部访问表格视图的接口
    QTableView* tableView() const { return m_tableView; }
    // 刷新面板中的产品数据
    void refreshData();
    void updateStatistics();

signals:
    // 发送添加产品请求的信号
    void addProductRequested();

private slots:
    // 处理添加按钮点击事件
    void onAddButtonClicked();
    // 处理刷新按钮点击事件
    void onRefreshButtonClicked();
    // 处理搜索文本变化事件
    void onSearchTextChanged(const QString &text);
    // 处理分类筛选条件变化事件
    void onCategoryFilterChanged(int index);

private:
    // 设置界面布局和组件
    void setupUI();
    // 建立各组件间的信号与槽连接
    void setupConnections();

    QTableView *m_tableView;       // 展示产品数据的表格视图
    ProductModel *m_model;         // 产品数据模型（关联数据源）

    QWidget *m_topPanel;           // 顶部区域（包含搜索、筛选、刷新组件）
    QLineEdit *m_searchEdit;       // 搜索输入框
    QComboBox *m_categoryFilter;   // 分类筛选下拉框
    QPushButton *m_refreshButton;  // 刷新按钮

    QWidget *m_bottomPanel;        // 底部区域（包含操作按钮）
    // 底部面板左侧 - 添加商品表单
   QLineEdit *m_productNameEdit;
   QLineEdit *m_specificationEdit;
   QLineEdit *m_colorEdit;
   QLineEdit *m_supplierEdit;
   QDoubleSpinBox *m_purchasePriceSpin;
   QDoubleSpinBox *m_sellingPriceSpin;
   QComboBox *m_categoryCombo;
   QCheckBox *m_discountCheck;
   QPushButton *m_addProductBtn;

   // 底部面板右侧 - 统计信息
   QLabel *m_totalPurchaseLabel;
   QLabel *m_totalSellingLabel;
   QLabel *m_categoryStatsLabel;

    QVBoxLayout *m_mainLayout;     // 主布局管理器


};

#endif // PRODUCTBROWSEPANEL_H
